package student;

import java.util.Collection;

import javax.ejb.EJBLocalObject;

import city.City;

import offer.Offer;
import placementDiary.PlacementDiary;
import query.Query;
import sector.Sector;
import timetable.Timetable;
import user.User;
import academicSup.AcademicSup;

import company.Company;
import compsup.CompanySup;
import country.Country;
import cv.CV;

import degree.Degree;
import descriptor.CVListDescriptor;
import descriptor.StudentDescriptor;
import feedback.Feedback;


/**
 * Student interface
 * 
 * @author Mathieu MARET, Mamadou TOURE
 * 
 * The Student interface defines all the business method that a client can invoke remotely 
 * on the object (StudentBean).
 * 
 * Note : 	-It extends the EJBLocalObject interface.
 * 			-We use @SuppressWarnings("unchecked") to avoid the warning about the collection element type.
 */
public interface Student extends EJBLocalObject 
{
	public int getId();
	public void setId(int id);
	
	public String getFirstName();
	public void setFirstName(String firstName);
	
	public String getName();
	public void setName(String name);
	
	public String getLogin();
	public void setLogin(String login);
	
	public String getPasswd();
	public void setPasswd(String passwd);
	
	public String getMail();
	public void setMail(String mail);
	
	// Bean attributes
	// relations 1-1
	public User getUser();
	public void setUser(User user);
	
	public PlacementDiary getPlacementDiary();
	public void setPlacementDiary(PlacementDiary placementDiary);
	
	public Feedback getAcademicSupFeedback();
	public void setAcademicSupFeedback(Feedback academicSupFeedback);
	
	public Feedback getCompanySupFeedback();
	public void setCompanySupFeedback(Feedback companySupFeedback);
	
	// relation 1-many
	public CompanySup getCompanySup();
	public void setCompanySup(CompanySup companySup);
	
	public AcademicSup getAcademicSup();
	public void setAcademicSup(AcademicSup academicSup);
	
	public Collection<CV> getCVs();
	public void setCVs(Collection<CV> CVs);
	
	public Degree getDegree();
	public void setDegree(Degree degree);
	
	public Collection<Company> getCompaniesPref();
	public void setCompaniesPref(Collection<Company> companiesPref);
	
	public Collection<Sector> getSectorsPref();
	public void setSectorsPref(Collection<Sector> sectorsPref);
	
	public Collection<City> getCitiesPref();
	public void setCitiesPref(Collection<City> citiesPref);
	
	public Collection<Country> getCountriesPref();
	public void setCountriesPref(Collection<Country> countriesPref);
	
	public Collection<Query>  getQueries();
	public void setQueries(Collection<Query> queries);
	
	public Collection<Offer> getOffers();
	public void setOffers(Collection<Offer> offers);
	
	public StudentDescriptor getDescriptor();
	public CVListDescriptor getCVDescriptor();
	
	//--timetable
	public Collection<Timetable>  getTimetables();
	public void setTimetables(Collection<Timetable> Timetable);
}
